package com.lleice.common.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;

/**
 * 常用工具类
 * @author lleice
 *
 */
public class CommonUtils {

	/**
	    *将字符串格式yyyyMMdd的字符串转为日期，格式"yyyy-MM-dd"
	    *
	    * @param date 日期字符串
	    * @return 返回格式化的日期
	    * @throws ParseException 分析时意外地出现了错误异常
	    */
	   public static String strToDateFormat(String date) throws ParseException {
	       SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
	       formatter.setLenient(false);
	       Date newDate= formatter.parse(date);
	       formatter = new SimpleDateFormat("yyyy-MM-dd");
	       return formatter.format(newDate);
	   }
	   
	   /**
	    * 计算两个日期相差时间
	    * @param startDate
	    * @param endDate
	    * @return
	    * @throws ParseException
	    */
	   public static long getBetweenDay(String startDate,String endDate) throws ParseException {
		   return DateUtil.betweenDay(DateUtil.parse(CommonUtils.strToDateFormat(startDate), "yyyy-MM-dd"), DateUtil.parse(CommonUtils.strToDateFormat(endDate), "yyyy-MM-dd"), true);
	   }
	   /**
	    * 计算两个日期相差(不保留绝对值)
	    * @param startDate
	    * @param endDate
	    * @return
	    * @throws ParseException
	    */
	   public static long getBetweenDayWithAbs(String startDate,String endDate) throws ParseException {
		   return DateUtil.between(DateUtil.parse(CommonUtils.strToDateFormat(startDate), "yyyy-MM-dd"), DateUtil.parse(CommonUtils.strToDateFormat(endDate), "yyyy-MM-dd"), DateUnit.DAY, false);
	   }
}
